﻿var { src, dest, task, series, watch, parallel } = require('gulp');
var sass = require("gulp-sass");
var cleanCss = require('gulp-clean-css');

// Gup API：https://gulpjs.com/docs/en/api/task
// 运行任务：在VS2017 [视图]-[其他窗口]-[任务运行程序资源管理器] 中查看，双击运行（右键菜单-运行）
// 如果有错误，在[视图] - [输出] - 显示输出来源：任务运行程序资源管理器 中查看

// 任务 sass：编译css文件夹下单个.scss文件
task("sass-test", function () {
    return src('sass/test.scss')
        .pipe(sass())
        .pipe(cleanCss()) //.pipe(cleanCss({ level: 2 }))
        .pipe(dest('css'));
});

// 任务 sass：编译css文件夹下单个.scss文件
task("sass-test2", function () {
    return src('sass/test2.scss')
        .pipe(sass())
        .pipe(cleanCss())
        .pipe(dest('css'));
});

// 任务 sass：编译css文件夹下所有.scss文件
task("sass", function () {
    return src('sass/*.scss')
        .pipe(sass())
        .pipe(cleanCss())
        .pipe(dest('css'));
});

// 任务 watch:sass：监听目录下所有sass文件，单个触发编译
task('watch:sass', function () {
    const watcher = watch('sass/*.scss');
    // 事件：'add', 'addDir', 'change', 'unlink', 'unlinkDir', 'ready', 'error', or 'all'全部事件
    watcher.on('all', function (event, path) {
        path = path.replace(/\\/g, '/');
        src(path)
            .pipe(sass())
            .pipe(cleanCss())
            .pipe(dest('css'));
        console.log(path + " : $" + event);
    });
});

// 一个任务启动多个任务 series 依次执行 parallel 是并发执行
task('sass-all', series('sass-test', 'sass-test2'));
